% Created 2022-05-04 周三 20:22
% Intended LaTeX compiler: xelatex
\documentclass[a4paper]{article}
                 \usepackage{graphicx}
                 \usepackage{xcolor}
                 \usepackage{xeCJK}
                 \usepackage{fixltx2e}
                 \usepackage{longtable}
                 \usepackage{float}        
                 \usepackage{tikz}         
                 \usepackage{wrapfig}      
                 \usepackage{latexsym,amssymb,amsmath}
                 \usepackage{textcomp}
                 \usepackage{bicaption}
                 \usepackage{listings}     
                \usepackage{marvosym}     
                \usepackage{textcomp}     
                \usepackage{latexsym}     
                \usepackage{natbib}
                \usepackage{indentfirst}
		\usepackage{hyperref}
                \usepackage{geometry}
                \usepackage{minted}
                \setCJKmainfont{宋体}
                \setlength{\parindent}{2em}
                \usepackage{color}
                \usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[R]{\footnotesize{《Android 物联网应用程序开发》 广西职业师范学院实验教学指导书}}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2cm,bottom=2cm}
\setCJKmainfont{仿宋}
\setCJKsansfont{Microsoft YaHei}
\setCJKmonofont{Microsoft YaHei}

            \lstset{
  columns=fixed,       
  breaklines=true, breakautoindent=true,breakindent=4em,
  numbers=left,                                        % 在左侧显示行号
  frame=none,                                          % 不显示背景边框
  backgroundcolor=\color[RGB]{245,245,244},            % 设定背景颜色
  keywordstyle=\color[RGB]{40,40,255},                 % 设定关键字颜色
  numberstyle=\footnotesize\color{darkgray},           % 设定行号格式
  commentstyle=\it\color[RGB]{0,96,96},                % 设置代码注释的格式
  stringstyle=\rmfamily\slshape\color[RGB]{128,0,0},   % 设置字符串格式
  showstringspaces=false,                              % 不显示字符串中的空格
  language=java,                                        % 设置语言
}

\usemintedstyle{emacs}
    \setminted{%
        autogobble,% automatically remove the spaces to the left of the code
        linenos=true,% show line numbers
        fontsize=\small,% smaller font size
        % escapeinside=@@,% insert latex code between @ and @
        frame=lines,% frame styles: none or lines
        % frame=none,
        numbers=none,% show line numbers on: left, right, both or none
        mathescape=true,% insert math code
	breaklines=true,
    }%
    \setmintedinline{%
        fontsize=\smallsize,
    }%
\date{\today}
\title{实验八：Notification 练习}
\hypersetup{
 pdfauthor={},
 pdftitle={实验八：Notification 练习},
 pdfkeywords={},
 pdfsubject={},
 pdfcreator={Emacs 27.1 (Org mode 9.3.8)}, 
 pdflang={English}}
\begin{document}

\maketitle
\tableofcontents

\newpage

\section{实验目的}
\label{sec:org2c3548e}
\begin{itemize}
\item 掌握系统组件的调用Notification
\end{itemize}
\section{实验设备和器件}
\label{sec:org232d5ca}
\begin{itemize}
\item PC
\item 内存要求 8G 以上
\end{itemize}
\section{实验内容}
\label{sec:org4e46303}
\subsection{步骤一:}
\label{sec:org9cff39a}
\begin{itemize}
\item 在布局文件中创建2个按钮，一个“创建消息”，一个是"删除消息"。
\lstset{language=XML,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
<Button
    android:id="@+id/createNotify"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="创建消息"/>
<Button
    android:id="@+id/deleteNotify"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="删除消息"/>
\end{lstlisting}
\end{itemize}
\subsection{步骤二：}
\label{sec:orgda7f14a}
\begin{itemize}
\item 声明按钮组件,设置通知ID,并在onCreate函数中添加监听
声明组件:
\lstset{language=java,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
private Button createNotify, deleteNotify;
private int NOTIFICATION_ID = 0x123 ;
\end{lstlisting}
\end{itemize}
\subsection{步骤三:}
\label{sec:orgc5f5e4d}
\begin{itemize}
\item 在 onCreate 函数中获取相关引用
\lstset{language=java,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
createNotify = (Button)findViewById(R.id.createNotify);
deleteNotify = (Button)findViewById(R.id.deleteNotify);
\end{lstlisting}

\item 在onCreate函数中为第一个按钮添加监听,监听器中的onClick重构函数内使用
Notification类中的Builder类构建通知。
\lstset{language=java,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
createNotify.setOnClickListener(new View.OnClickListener() {
	@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
	@Override
	public void onClick(View v) {
	   // 创建Notification的构建起
	   Notification.Builder builder = new Notification.Builder(C404Toast.this);
	   // 设置Notification的在状态栏中的图标
	   builder.setSmallIcon(R.mipmap.sms);
	   // 设置Notification的提示信息
	   builder.setTicker("Notification的提示测试");
	   // 设置Notification的在状态栏中的标题
	   builder.setContentTitle("Notification的标题测试");
	   // 设置Notification的在状态栏中的内容
	   builder.setContentText("Notification的内容测试");
	   // 设置Notification启动时间
	   builder.setWhen(System.currentTimeMillis());
	   // 创建Notification
	   Notification notification = builder.build();
	   // 设置Notification的声音为默认声音
	   notification.defaults = Notification.DEFAULT_SOUND;
	   // 获取系统的Notification服务
	   NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
	   // 发送Notification消息
	   notificationManager.notify(NOTIFICATION_ID, notification);
       }
   });

\end{lstlisting}
\end{itemize}
\subsection{步骤四：}
\label{sec:orgd46a9be}
\begin{itemize}
\item 为第二个按钮添加监听，监听器内实现消息删除的操作
\end{itemize}
\lstset{language=java,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
//删除消息
deleteNotify.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View v) {
	    // 获取系统的Notification服务
	    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
	    // 取消通知
	    notificationManager.cancel(NOTIFICATION_ID);
	}
    });
\end{lstlisting}
\subsection{步骤五：}
\label{sec:orgd034baa}
\begin{itemize}
\item 运行调试，点击发送通知的按钮，查看是否会有通知出现在顶部
\item 点击取消通知按钮，查看通知是否会被取消
\item 截图相关界面，完成实验报告
\end{itemize}
\end{document}